// 前端模板
! function(a) {
    "use strict";
    var b = function(a, c) {
        var d = /[^\w\-\.:]/.test(a) ? new Function(b.arg + ",tmpl", "var _e=tmpl.encode" + b.helper + ",_s='" + a.replace(b.regexp, b.func) + "';return _s;") : b.cache[a] = b.cache[a] || b(b.load(a));
        return c ? d(c, b) : function(a) {
            return d(a, b)
        }
    };
    b.cache = {}, b.load = function(a) {
        return document.getElementById(a).innerHTML
    }, b.regexp = /([\s'\\])(?!(?:[^{]|\{(?!%))*%\})|(?:\{%(=|#)([\s\S]+?)%\})|(\{%)|(%\})/g, b.func = function(a, b, c, d, e, f) {
        return b ? {
            "\n": "\\n",
            "\r": "\\r",
            "	": "\\t",
            " ": " "
        } [b] || "\\" + b : c ? "=" === c ? "'+_e(" + d + ")+'" : "'+(" + d + "==null?'':" + d + ")+'" : e ? "';" : f ? "_s+='" : void 0
    }, b.encReg = /[<>&"'\x00]/g, b.encMap = {
        "<": "&lt;",
        ">": "&gt;",
        "&": "&amp;",
        '"': "&quot;",
        "'": "&#39;"
    }, b.encode = function(a) {
        return (null == a ? "" : "" + a).replace(b.encReg, function(a) {
            return b.encMap[a] || ""
        })
    }, b.arg = "o", b.helper = ",print=function(s,e){_s+=e?(s==null?'':s):_e(s);},include=function(s,d){_s+=tmpl(s,d);}", "function" == typeof define && define.amd ? define(function() {
        return b
    }) : a.tmpl = b
}(this);
// 迷你发布订阅系统
(function($) {
    var o = $({});
    $.subscribe = function() {
        o.on.apply(o, arguments);
    };
    $.unsubscribe = function() {
        o.off.apply(o, arguments);
    };
    $.publish = function() {
        o.trigger.apply(o, arguments);
    };
}($));

$(function() {
    'use strict';
    var win = window;
    win.GLOBAL = win.GLOBAL || {};
    win.hr = win.hr || {};

    win.hr.version = '1.6.12';
    win.hr.page = win.hr.page || {};
    win.hr.component = win.hr.component || {};

    /**
     * @description 注册组件
     * @param {String} name 组件名字
     * @param {Object} obj 组件 Javascript 逻辑，JSON 格式
     * @return {Object} 返回 window.hr.component 对象
     * @example
     * hr.regComponent('组件名', {
     *     init: function () { // 此 init 方法为必需，组件注册后会执行的方法
     *         this.someAction();
     *     },
     *     someAction: function () {
     *         // 组件 Javascript 逻辑，可以根据需要写多个 Function
     *     }
     * });
     * 组件注册后如果要再次调用，可以用 hr.component.组件名 获取组件对象
     */
    win.hr.regComponent = function(name, obj) {
        if (typeof name == 'string' && name !== '') {
            win.hr.util._createNamespace(name.split('.'), obj, win.hr.component);
        }
    };

    /**
     * @description 注册页面
     * @param {String} name 页面名字
     * @param {Object} obj 页面 Javascript 逻辑，JSON 格式
     * @return {Object} 返回 window.hr.page 对象
     * @example
     * hr.regPage('页面名', {
     *     init: function () { // 此 init 方法为必需，组件页面后会执行的方法
     *         this.someAction();
     *     },
     *     someAction: function () {
     *         // 页面 Javascript 逻辑，可以根据需要写多个 Function
     *     }
     * });
     * 页面注册后如果要再次调用，可以用 hr.page.页面名 获取页面对象
     */
    win.hr.regPage = function(name, obj) {
        if (typeof name == 'string' && name !== '') {
            win.hr.util._createNamespace(name.split('.'), obj, win.hr.page);
        }
    };

    win.hr.util = {
        /**
         * @description 渲染模板
         * @param {JSON} opt 包含以下内容
         * @param {String} opt.tmpl 模板区域的 ID 名
         * @param {Object} opt.data 要渲染的 JSON 数据
         * @param {Object} opt.to 要追加进的 jQuery DOM 对象
         * @param {Object} opt.insertTo 要插入到其之前或之后的 jQuery DOM 对象
         * @param {String} opt.method 渲染的方式，包括 replace、append 和 prepend，当同时有 insertTo 时，是以 insertTo 为基准
         * @param {Function} opt.callbackFn 回调函数
         */
        renderTmpl: function(opt) {
            var strTargetTmpl = opt.tmpl || '';
            var jsonData = opt.data || {};
            var $target = opt.to;
            var method = opt.method || 'append';
            var $insertTo = opt.insertTo || null;
            if ($target) {
                var tmpled = tmpl(strTargetTmpl, jsonData);
                switch (method) {
                    case 'replace':
                        $target.html(tmpled);
                        break;
                    case 'append':
                        if ($insertTo) {
                            $(tmpled).insertAfter($insertTo);
                        } else {
                            $target.append(tmpled);
                        }
                        break;
                    case 'prepend':
                        if ($insertTo) {
                            $(tmpled).insertBefore($insertTo);
                        } else {
                            $target.prepend(tmpled);
                        }
                        break;
                    default:
                        break;
                }
            }
            $.isFunction(opt.callbackFn) && opt.callbackFn();
        },
        /**
         * @description 从 URL 中获取指定参数值
         * @param {String} str 要从 URL 中获取的参数值
         */
        getUrlParam: function(str) {
            var s = location.search;
            var tmp = [];
            var value = '';
            if (s) {
                tmp = s.substr(1).split('&');
            }
            for (var i = 0; i < tmp.length; i++) {
                if (tmp[i].substring(0, tmp[i].indexOf('=')) === str) {
                    value = tmp[i].substr(tmp[i].indexOf('=') + 1);
                    break;
                }
            }
            return value;
        },
        /**
         * @description 使用 rem 单位时自动计算 html 初始字体尺寸。比如设计稿是 750px 的，那么对应的 1rem 就等于 100px；如果设计稿是非标准尺寸，比如 844px，那么可以传入参数 baseWidth 844，这样可以保证 1rem 等于 100px，便于计算。
         * @param {Number} baseWidth 基准尺寸
         */
        resizePage: function(baseWidth) {
            var baseW = baseWidth || 750;
            var docEl = document.documentElement,
                resizeEvt = 'orientationchange' in win ? 'orientationchange' : 'resize',
                recalc = function() {
                    var clientWidth = docEl.clientWidth;
                    if (!clientWidth) {
                        return;
                    }
                    if (clientWidth > baseW) {
                        clientWidth = baseW;
                    }
                    docEl.style.fontSize = 100 * (clientWidth / baseW) + 'px';
                };
            if (!document.addEventListener) {
                return;
            }
            win.addEventListener(resizeEvt, recalc, false);
            recalc();
        },
        /**
         * @description 内部方法，创建一个命名空间
         */
        _createNamespace: function(parts, obj, parent) {
            var obj = obj || {
                init: function() {}
            };
            var i = 0;
            if (parts[0] === 'hr') {
                parts = parts.slice(1);
            }
            for (i = 0; i < parts.length; i++) {
                if (typeof parent[parts[i]] == 'undefined') {
                    parent[parts[i]] = obj;
                    // 组件或页面注册后执行
                    obj.init();
                }
                parent = parent[parts[i]];
            }
        },
        /*
         * 弹出框
         */
        popWin: function() {
            $('.myfancy').click(function() {
                var _id = $(this).attr('data-href');
                $(_id).fadeIn("normal");
                $('.pop-bg').addClass('open');
            });
            $('.js-close, .js-btn').click(function() {
                $(this).parents('.m-pop').fadeOut("normal");
                $('.pop-bg').removeClass('open');
            });
            $('.js-fullscreen').on('click', function(event) {
                $(this).parents('.m-pop').toggleClass('pop-fullscreen');
            });
        },
        /*
         * table
         */
        tableFun: function() {
            $('.table-scroll-x .table1-body').on('scroll', function(event) {
                var $parents = $(event.delegateTarget);
                var _left = $(this).scrollLeft();
                $(this).siblings('.table1-head').find('table').css('left', -_left);
            });


            var _height = $('.table-scroll-y .table1-body table').innerHeight();
            if (_height > 594) {
                $('.table-scroll-y .table1-right_fixed').css('right', '7px');
            }
            $('.table-scroll-y .table1-body').on('scroll', function(event) {
                var $parents = $(event.delegateTarget);
                var _top = $(this).scrollTop();
                $(this).siblings('.table1-left_fixed').find('.table1-body_fixed').find('table').css('top', -_top);
                $(this).siblings('.table1-right_fixed').find('.table1-body_fixed').find('table').css('top', -_top);
            });
            $('.table-1 tbody tr').on('mouseenter', function(event) {
                var _index = $(this).index();
                var _tbody = $(this).parents('.data-content').find('tbody');

                _tbody.each(function(index, item) {
                    $(item).find('tr').eq(_index).addClass('table1_hover');
                });
            });
            $('.table-1 tbody tr').on('mouseleave', function(event) {
                var _tbody = $(this).parents('.data-content').find('tbody');

                _tbody.find('tr').removeClass('table1_hover');
            });


            function resizeTab(_width, _widthTb) {
                if (_widthTb > _width) {
                    $('.table1-left_fixed').addClass('boxShadow');
                    $('.table1-right_fixed').addClass('boxShadow');
                } else {
                    $('.table1-left_fixed').removeClass('boxShadow');
                    $('.table1-right_fixed').removeClass('boxShadow');
                }

                $('.table1-left_fixed table').css({
                    'width': _widthTb
                });
                $('.table1-right_fixed table').css({
                    'width': _widthTb
                });
            }
            var _width = $('.table-scroll-x .table1-body').innerWidth();
            var _widthTb = $('.table-scroll-x .table1-body table').innerWidth();
            resizeTab(_width, _widthTb);
            $(window).on('resize', function(event) {
                _width = $('.table-scroll-x .table1-body').innerWidth();
                _widthTb = $('.table-scroll-x .table1-body table').innerWidth();
                resizeTab(_width, _widthTb);
            });
        },
        /*
         * 上传文件
         */
        uploadFun: function() {
            $('.js-upload').change(function(event) {

                var docObj = this;
                var $parents = $(this).parents('.fileUpload-btn');
                var $imgs = $parents.siblings('.fileUpload-imgs');

                if (docObj.files) {
                    var filePath = $(this).val(), //获取到input的value，里面是文件的路径
                        fileFormat = filePath.substring(filePath.lastIndexOf(".")).toLowerCase(),
                        _src = window.URL.createObjectURL(this.files[0]); //转成可以在本地预览的格式

                    // 检查是否是图片
                    if (!fileFormat.match(/.png|.jpg|.jpeg/)) {
                        error_prompt_alert('上传错误,文件格式必须为：png/jpg/jpeg');
                        return;
                    }

                    _src = window.URL.createObjectURL(docObj.files[0]);
                    if ($imgs.find('li').length == 1) {
                        return false;
                    } else {
                        $imgs.append('<li> <img class="img" src="' + _src + '" alt="" /> <div class="mask"> <i class="el-icon-delete"></i> </div> </li>');
                        $parents.hide();
                    }
                }
                //IE（只能一次上传1张）
                else {
                    var path = ''

                    if ($imgs.find('li').length == 1) {
                        return false;
                    } else {
                        $imgs.append('<li><div class="img" id="fileUpload-imgs"></div><div class="mask"> <i class="el-icon-delete"></i> </div></li>');
                        docObj.select();
                        docObj.blur();
                        path = document.selection.createRange().text;
                        document.getElementById("fileUpload-imgs").innerHTML = "";
                        document.getElementById("fileUpload-imgs").style.filter = "progid:DXImageTransform.Microsoft.AlphaImageLoader(enabled='true',sizingMethod='scale',src=\"" + path + "\")"; //使用滤镜效果
                        $parents.hide();
                    }
                }


            });
            $('body').on('click', '.fileUpload-imgs .mask .el-icon-delete', function() {
                var $parents = $(this).parents('.fileUpload-imgs');
                var $uploadLabel = $(this).parents('.fileUpload-imgs').siblings('.fileUpload-btn');
                $(this).parents('li').remove();
                $uploadLabel.show();
            })
        },
        /*
         * input
         */
        inputFun: function() {
            var $inputSuffix = $('.input-suffix');
            $inputSuffix.each(function(index, item) {

                $(item).on('input focus mouseenter', '.input-inner', function(event) {
                    var $parents = $(event.delegateTarget);
                    var $this = $(this);

                    $inputSuffix.removeClass('close-show');
                    if ($this.val().length > 0) {
                        $parents.addClass('close-show');
                    }
                }).on('click', '.el-icon-circle-close', function(event) {
                    var $parents = $(event.delegateTarget);
                    var $this = $(this);
                    var $inputInner = $parents.find('.input-inner');

                    if ($inputInner.val().length > 0) {
                        $inputInner.val('');
                        $parents.removeClass('close-show');
                    }
                }).on('click', '.el-icon-view', function(event) {
                    var $parents = $(event.delegateTarget);
                    var $this = $(this);
                    var $inputInner = $parents.find('.input-inner');
                    $parents.toggleClass('view-show');
                    if ($parents.hasClass('view-show')) {
                        $inputInner.attr('type', 'text');
                    } else {
                        $inputInner.attr('type', 'password');
                    }
                }).on('mouseenter', function(event) {
                    var $this = $(this);
                    var $inputInner = $(this).find('.input-inner');

                    $inputSuffix.removeClass('close-show');
                    if ($inputInner.val().length > 0) {
                        $this.addClass('close-show');
                    }
                }).on('mouseleave', function(event) {
                    var $this = $(this);
                    var $inputInner = $(this).find('.input-inner');

                    $inputSuffix.removeClass('close-show');
                    if ($inputInner.val().length > 0) {
                        $this.removeClass('close-show');
                    }
                }).on('click', function(event) {
                    event.stopPropagation();
                })
            });
            $('body').on('click', function(event) {
                $('.input-suffix').removeClass('close-show');
            });
        },
        /*
         * 钱包解锁
         */
        jiesuoFun: function() {
            function radioSelect() {
                $('.radio-group li').each(function(index, item) {
                    var _selectName = $(item).attr('data-selectName');

                    $(_selectName).hide();
                    if ($(item).find('input').prop('checked') == true) {
                        $(_selectName).show();
                    }

                });
            }
            radioSelect();
            $('.radio-group').on('click', 'li', function(event) {
                radioSelect();
            });
        },
        /*
         * 搜索框显示或隐藏
         */
        searchFun: function() {
            $('.js_search_show_hide').on('click', function(event) {
                $(this).parents('.block2-cont').find('.box-set5').stop().slideToggle();
            });
        },
        /*
         * 数据树
         */
        treeFun: function() {
            $('.js_tree li:has(ul)').addClass('parent_li');
            $('.js_tree .parent_li').each(function(index, item) {
                $(item).find('> .title').find('.icon-calendar').addClass('icon-plus-sign');
            });

            $('.js_tree li > .title').on('click', function(event) {
                $('.js_tree li > .title').removeClass('on');
                $(this).addClass('on');
            });

            $('.js_tree li.parent_li > .title').on('click', function(e) {
                e.stopPropagation();
                var children = $(this).parent('li.parent_li').find(' > ul > li');
                if (children.is(":visible")) {
                    children.hide(0);
                    $(this).find(' > i').addClass('icon-plus-sign').removeClass('icon-minus-sign');
                } else {
                    children.show(0);
                    $(this).find(' > i').addClass('icon-minus-sign').removeClass('icon-plus-sign');
                }
            });
        },
        /*
         * 侧边导航
         */
        navFun: function() {
            function navClick() {
                $('.slide-nav .v1').unbind('mouseenter');
                $('.slide-nav .slide-nav-subitem').each(function(index, val) {
                    if ($(val).length) {
                        $(val).siblings('.v1').find('.icon-arrow').show();
                    }
                });
                $('.slide-nav .v1').on('click', function(event) {
                    if ($(this).siblings('.slide-nav-subitem').length) {
                        $(this).parents('li').stop().toggleClass('active').siblings('li').removeClass('active');
                        return false;
                    }
                });
            }

            function navMouseEnter() {
                $('.slide-nav .v1').unbind('click');
                $('.slide-nav .v1').on('mouseenter', function(event) {
                    if ($(this).siblings('.slide-nav-subitem').length) {
                        $(this).parents('li').stop().toggleClass('active').siblings('li').removeClass('active');
                        return false;
                    }
                });
                $('.slide-nav').on('mouseleave', function(event) {
                    $('body.leftHidden .slide-nav > li').removeClass('active');
                });
            }

            navClick();

            function resizeTab(_width, _widthTb) {
                $('.table1-left_fixed table').css({
                    'width': _widthTb
                });
                $('.table1-right_fixed table').css({
                    'width': _widthTb
                });
            }
            $('.arrow-btn').on('click', function(event) {
                $('body').toggleClass('leftHidden');
                if ($('body').hasClass('leftHidden')) {
                    navMouseEnter();
                } else {
                    navClick();
                }
                var t = setTimeout(function() {
                    var _width = $('.table-scroll-x .table1-body').innerWidth();
                    var _widthTb = $('.table-scroll-x .table1-body table').innerWidth();
                    resizeTab(_width, _widthTb);
                }, 500)
            });
        },
        /**
         * 切换
         */
        tabsFun: function() {
            $('.tabrel05-tit .tabrel05-item').each(function(index, val) {
                var _width = $(this).innerWidth(true);
                $('.tabrel05-hd .line').css({
                    'width': _width + 'px'
                });
            });
            $('.tabrel05-tit .tabrel05-item').on('click', function(event) {
                var _width = parseInt($(this).innerWidth());
                $('.tabrel05-hd .line').css({
                    'width': _width + 'px',
                    'left': _width * $(this).index() + 'px'
                });
            });
        }
    };

    win.hr.init = function() {

        // TODO 这里放页面初始化时需要执行的代码

        win.hr.util.popWin();
        win.hr.util.tableFun();
        win.hr.util.uploadFun();
        win.hr.util.inputFun();
        win.hr.util.jiesuoFun();
        win.hr.util.searchFun();
        win.hr.util.treeFun();
        win.hr.util.navFun();
        win.hr.util.tabsFun();
    };

    win.hr.init();
});